#include "widget.h"
#include "ui_widget.h"
#include <QTimer>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 设置初始值:从 10 秒开始倒计时
    ui->lcdNumber->display(10);
    // 创建一个 QTimer 实例：通过 QTimer 这个类创建出来的对象，就会产生一个 timeout 的信号
    timer = new QTimer(this);
    // 把 timeout 信号与自己的 lcdnumber 槽函数连接
    connect(timer, &QTimer::timeout, this, &Widget::handle);
    // 启动定时器，参数是触发 timeout 的周期，单位是 ms
    // 每隔 1s 就会触发一次 timeout 信号，因为connect了自己的槽函数handle
    // 所以只需要在handle中设置LCDNumber的数值即可达成倒计时
    timer->start(1000);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handle()
{
    // 首先获取LCDNumber上的数值
    int value = ui->lcdNumber->intValue();
    // 等于 0 说明倒计时完毕，让定时器停止，直接返回槽函数即可
    if(value == 0)
    {
        timer->stop();
        return;
    }
    // 否则没有结束，设置 -1 进LCDNumber中
    ui->lcdNumber->display(value-1);
}

